package com.hqd.ch03.v17.listener;

import com.hqd.ch03.v17.listener.event.BeanFactoryEvent;

/**
 * 监听器管理器
 */
public interface BeanFactoryEventMulticaster {
    /**
     * 添加监听器
     *
     * @param listener
     */
    void addBeanFactoryListener(BeanFactoryListener<?> listener);

    /**
     * 添加监听器
     *
     * @param listenerBeanName 容器中存在的bean
     */
    void addBeanFactoryListenerBean(String listenerBeanName);

    /**
     * 删除监听器
     *
     * @param listener
     */
    void removeBeanFactoryListener(BeanFactoryListener<?> listener);

    /**
     * 删除监听器
     *
     * @param listenerBeanName 容器中存在的bean
     */
    void removeBeanFactoryListenerBean(String listenerBeanName);

    /**
     * 触发监听器
     *
     * @param event
     */
    void multicastEvent(BeanFactoryEvent event);
}
